/************************************************* <AUTO_FILE_HEADER> *************************************************/
/*                                                                                                                    */
/* !Layer           : EMEM                                                                                            */
/*                                                                                                                    */
/* !Component       : EMEM                                                                                            */
/* !Description     : EMEM unit                                                                                       */
/*                                                                                                                    */
/* !Module          : EMEM_API                                                                                        */
/* !Description     : API of EMEM unit                                                                                */
/*                                                                                                                    */
/* !File            : EMEM.h                                                                                          */
/*                                                                                                                    */
/* !Target          : Aurix_TC27x                                                                                     */
/*                                                                                                                    */
/* !Vendor          : Valeo                                                                                           */
/*                                                                                                                    */
/* Coding language  : C                                                                                               */
/*                                                                                                                    */
/* COPYRIGHT 2012 VALEO                                                                                               */
/* all rights reserved                                                                                                */
/*                                                                                                                    */
/**********************************************************************************************************************/
/************************************************ </AUTO_FILE_HEADER> *************************************************/
/* PVCS Information                                                                                                   */
/* $Archive::   P:/VE_S97/LOG/60_ComponentArchive/Archives/COMP_SWC_BSW_MCAL_MPC5676/adc_api.h_v                     $*/
/* $Revision::   1.10                                                                                                $*/
/* $Author::   vbecquet                               $$Date::   18 Jun 2013 18:50:22                                $*/
/**********************************************************************************************************************/

#ifndef EMEM_H
#define EMEM_H

#include "Std_Types.h"
#include "Std_Limits.h"
#include "Micro.h"
#include "Mcal.h"
#include "IfxScuWdt.h"
#include "MATHSRV.h"
#include "Wdg.h"

/**********************************************************************************************************************/
/* DEFINES                                                                                                            */
/**********************************************************************************************************************/
#define EMEM_u32MAX_SIZE         0x00100000u
#define EMEM_u32BLOCK_SIZE       0x00010000u
#define EMEM_u32NB_BLOCK         (EMEM_u32MAX_SIZE / EMEM_u32BLOCK_SIZE)
#define EMEM_u32SYSTEM_CLOCK_MHZ 100

/**********************************************************************************************************************/
/* TYPEDEF                                                                                                            */
/**********************************************************************************************************************/


/**********************************************************************************************************************/
/* VARIABLES                                                                                                          */
/**********************************************************************************************************************/

/**********************************************************************************************************************/
/* MACRO FUNCTIONS                                                                                                    */
/**********************************************************************************************************************/
/************************************************ <AUTO_MACRO_HEADER> *************************************************/
/*                                                                                                                    */
/* !Description : Get the start value for a timeout                                                                   */
/* !Number      : 1                                                                                                   */
/* !Reference   : NONE                                                                                                */
/*                                                                                                                    */
/* !Trace_To    : NONE                                                                                                */
/*                                                                                                                    */
/************************************************ </AUTO_MACRO_HEADER> ************************************************/
/* !LastAuthor  :  E. Moas                                                                                            */
/*********************************************** <AUTO_MACRO_PROTOTYPE> ***********************************************/
#define EMEM_u32GET_TIMEOUT_START() ((uint32)MODULE_STM0.TIM0.U)

/************************************************ <AUTO_MACRO_HEADER> *************************************************/
/*                                                                                                                    */
/* !Description : Checks if the specified timeout is elapsed                                                          */
/* !Number      : 2                                                                                                   */
/* !Reference   : NONE                                                                                                */
/*                                                                                                                    */
/* !Trace_To    : NONE                                                                                                */
/*                                                                                                                    */
/************************************************ </AUTO_MACRO_HEADER> ************************************************/
/* !LastAuthor  :  E. Moas                                                                                            */
/*********************************************** <AUTO_MACRO_PROTOTYPE> ***********************************************/
/* !Comment: Wait for the specified time (in us) */
#define EMEM_bTIMEOUT_ELAPSED(u32Start, u32Dur) \
   ( (((uint32)((uint32)MODULE_STM0.TIM0.U  - (u32Start))) < ((uint32)(EMEM_u32SYSTEM_CLOCK_MHZ * (u32Dur)))) \
   ? FALSE \
   : TRUE)
	

/**********************************************************************************************************************/
/* FUNCTIONS                                                                                                          */
/**********************************************************************************************************************/
#define EMEM_START_SEC_CODE
#include "EMEM_MemMap.h"
extern void EMEM_vidUnlock(uint32 * pu32Start, uint32 u32Size);
#define EMEM_STOP_SEC_CODE
#include "EMEM_MemMap.h"

#endif /* EMEM_H */

/*---------------------------------------------------- end of file ---------------------------------------------------*/